// Text Scene Node
// (c) jimon game studio

#ifndef JEH_ITEXTSCENENODE
#define JEH_ITEXTSCENENODE

#include "ISceneNode.h"
#include "jeFontResource.h"
#include "jeStl.h"
#include "IMaterialResourceNode.h"

namespace je
{
	namespace scene
	{
		//! Text Scene Node
		class ITextSceneNode:public je::scene::IMaterialResourceNode
		{
		public:
			//! Constructor
			ITextSceneNode(video::IRender * Render,const jeStringd & SetNodeName)
				:IMaterialResourceNode(Render,SetNodeName)
			{
			}

			//! Destructor
			virtual ~ITextSceneNode()
			{
			}

			//! Set Text
			virtual void SetText(const jeStringd & Text) = 0;

			//! Get Text
			virtual const jeStringd & GetText() = 0;
		
			//! Get Text Size in pixels
			virtual jeVector2di GetTextSize() = 0;

			//! Text Options
			struct TextOptions
			{
				//! Dynamic Mode
				u1 DynamicMode;

				//! Kerning
				u1 Kerning;

				//! Origin in center
				u1 OriginInCenter;

				//! Global origin
				jeVector2df Origin;

				//! Constructor
				TextOptions()
					:DynamicMode(true),Kerning(false),OriginInCenter(true),Origin(0.0f)
				{
				}
			};

			//! Set Text Options
			virtual void SetTextOptions(const TextOptions & Options) = 0;

			//! Get Text Options
			virtual const TextOptions & GetTextOptions() = 0;

			//! Set Font Resource
			virtual void SetFontResource(media::jeFontResource * FontResource) = 0;

			//! Get Font Resource
			virtual media::jeFontResource * GetFontResource() = 0;
		};
	}
}

#endif
